<template>
  <div></div>
</template>

<script setup lang="ts">
  import * as sqlite3 from 'sqlite3'
  import { resolve } from 'path'
  import { app } from '@electron/remote'

  function resolvePath(fileName: string) {
    return resolve(app.getPath('userData'), 'db', fileName)
    // return resolve(process.cwd(), 'db', fileName)
  }

  // 连接数据库
  // 执行 verbose 函数，便于调试代码，代码出错，会定位到具体的代码
  const sqlite = sqlite3.verbose()
  // 初始化数据库，指定数据库存储路径，指定数据库操作模式为速写模式
  const db = new sqlite.Database(resolvePath('db.db'), sqlite.OPEN_READWRITE, (err) => {
    if (err) {
      console.log(err)
    } else {
      console.log('数据库连接成功')
    }
  })

  // db.run(sql,params?,callback?)
  // 执行除了查询之外的 建表、插入、更新及删除的 sql 语句
  // 创建表格

  // db.run(
  //   `CREATE TABLE IF NOT EXISTS users (
  //     id 				INTEGER 			NOT NULL		PRIMARY KEY AUTOINCREMENT,
  //     username 	CHAR ( 45 ) 	NOT NULL,
  //     age       INT						NOT NULL,
  //     userType 	CHAR ( 45 ) 	NOT NULL 		DEFAULT 'user',
  //     sort 		 	INT 					NOT NULL 		DEFAULT 10
  //   )`,
  //   (err) => {
  //     if (err) {
  //       console.log(err)
  //     } else {
  //       console.log('创建 users 表成功')
  //     }
  //   }
  // )

  // // 插入数据
  // db.run(`INSERT INTO users VALUES ( NULL, 'kunkun', 18, 'user', 10 )`, (err) => {
  //   if (err) {
  //     console.log(err)
  //   } else {
  //     console.log('插入数据成功')
  //   }
  // })

  // db.run(`INSERT INTO users VALUES ( ?, ?, ?, ? ,? )`, [null, '唔西迪西', 20, 'user', 12], (err) => {
  //   if (err) {
  //     console.log(err)
  //   } else {
  //     console.log('插入数据成功')
  //   }
  // })

  // // 更新数据
  // /*  db.run(`UPDATE users SET username = '坤坤', userType = 'admin' WHERE id = 1`, (err) => {
  //   if (err) {
  //     console.log(err)
  //   } else {
  //     console.log('更新数据成功')
  //   }
  // }) */

  // db.run(`UPDATE users SET username = ?, userType = ? WHERE id = ?`, ['玛卡巴卡', 'admin', 2], (err) => {
  //   if (err) {
  //     console.log(err)
  //   } else {
  //     console.log('更新数据成功')
  //   }
  // })

  // // 删除数据
  // db.run(`DELETE FROM users WHERE id = 2`, (err) => {
  //   if (err) {
  //     console.log(err)
  //   } else {
  //     console.log('删除数据成功')
  //   }
  // })

  // /*  db.run(`DELETE FROM users WHERE id = ?`, [3], (err) => {
  //   if (err) {
  //     console.log(err)
  //   } else {
  //     console.log('删除数据成功')
  //   }
  // }) */

  // // 查询数据
  // db.all(`SELECT * FROM users`, (err, rows) => {
  //   if (err) {
  //     console.log(err)
  //   } else {
  //     console.log(rows)
  //   }
  // })

  // // 遍历查询出来的结果
  // /* db.each(`SELECT * FROM users`, (err, row) => {
  //   if (err) {
  //     console.log(err)
  //   } else {
  //     console.log(row)
  //   }
  // }) */

  // // 关闭数据库连接
  // db.close((err) => {
  //   if (err) {
  //     return console.log(err)
  //   }
  //   console.log('关闭数据库连接')
  // })

  // 直接执行上述操作，执行顺序会有差异，使用 db.serialize 即可按照指定顺序执行
  db.serialize(() => {
    // 建表
    db.run(`CREATE TABLE IF NOT EXISTS users (
      id 				INTEGER 			NOT NULL		PRIMARY KEY AUTOINCREMENT,
      username 	CHAR ( 45 ) 	NOT NULL,
      age       INT						NOT NULL,
      userType 	CHAR ( 45 ) 	NOT NULL 		DEFAULT 'user',
      sort 		 	INT 					NOT NULL 		DEFAULT 10
    )`)

    // 插入数据
    db.run(`INSERT INTO users VALUES ( NULL, 'kunkun', 18, 'user', 10 )`, (err) => {
      if (err) {
        console.log(err)
      } else {
        console.log('插入数据成功')
      }
    })
    db.run(`INSERT INTO users VALUES ( ?, ?, ?, ? ,? )`, [null, '唔西迪西', 20, 'user', 12], (err) => {
      if (err) {
        console.log(err)
      } else {
        console.log('插入数据成功')
      }
    })

    // 更新数据
    db.run(`UPDATE users SET username = '坤坤', userType = 'admin' WHERE id = 1`, (err) => {
      if (err) {
        console.log(err)
      } else {
        console.log('更新数据成功')
      }
    })

    // 删除数据
    db.run(`DELETE FROM users WHERE id = 2`, (err) => {
      if (err) {
        console.log(err)
      } else {
        console.log('删除数据成功')
      }
    })

    // 查询数据
    db.all(`SELECT * FROM users`, (err, rows) => {
      if (err) {
        console.log(err)
      } else {
        console.log(rows)
      }
    })

    // 关闭数据库连接
    db.close((err) => {
      if (err) {
        return console.log(err)
      }
      console.log('关闭数据库连接')
    })
  })
</script>

<style scoped></style>
